package com.ruoyi.bellItem.service.impl;

import com.ruoyi.bellItem.domain.ClockItem;
import com.ruoyi.bellItem.domain.ClockItemSpecs;
import com.ruoyi.bellItem.mapper.ClockItemMapper;
import com.ruoyi.bellItem.mapper.ClockItemSpecsMapper;
import com.ruoyi.bellItem.service.IClockItemService;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.check.CheckEmptyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 加钟服务项目Service业务层处理
 *
 * @author ruoyi
 * @date 2025-04-07
 */
@Service
public class ClockItemServiceImpl implements IClockItemService {
    @Autowired
    private ClockItemMapper clockItemMapper;
    @Resource
    private ClockItemSpecsMapper clockItemSpecsMapper;

    /**
     * 查询加钟服务项目
     *
     * @param id 加钟服务项目主键
     * @return 加钟服务项目
     */
    @Override
    public ClockItem selectClockItemById(Long id) {
        return clockItemMapper.selectClockItemById(id);
    }

    /**
     * 查询加钟服务项目列表
     *
     * @param clockItem 加钟服务项目
     * @return 加钟服务项目
     */
    @Override
    public List<ClockItem> selectClockItemList(ClockItem clockItem) {
        return clockItemMapper.selectClockItemList(clockItem);
    }

    /**
     * 新增加钟服务项目
     *
     * @param clockItem 加钟服务项目
     * @return 结果
     */
    @Override
    public int insertClockItem(ClockItem clockItem) {
        clockItem.setCreateTime(DateUtils.getNowDate());
        int inserted = clockItemMapper.insertClockItem(clockItem);
        if (!CheckEmptyUtil.isEmpty(clockItem.getItemSpecsList())) {
            for (ClockItemSpecs clockItemSpecs : clockItem.getItemSpecsList()) {
                ClockItemSpecs insertItemSpecs = new ClockItemSpecs();
                insertItemSpecs.setClockItemId(clockItem.getId());
                insertItemSpecs.setItemSpecsName(clockItemSpecs.getItemSpecsName());
                insertItemSpecs.setItemSpecsTime(clockItemSpecs.getItemSpecsTime());
                insertItemSpecs.setItemSpecsPrice(clockItemSpecs.getItemSpecsPrice());
                insertItemSpecs.setItemSpecsMemberPrice(clockItemSpecs.getItemSpecsMemberPrice());
                clockItemSpecsMapper.insertClockItemSpecs(insertItemSpecs);
            }
        }
        return inserted;
    }

    /**
     * 修改加钟服务项目
     *
     * @param clockItem 加钟服务项目
     * @return 结果
     */
    @Override
    public int updateClockItem(ClockItem clockItem) {
        clockItem.setUpdateTime(DateUtils.getNowDate());
        return clockItemMapper.updateClockItem(clockItem);
    }

    /**
     * 批量删除加钟服务项目
     *
     * @param ids 需要删除的加钟服务项目主键
     * @return 结果
     */
    @Override
    public int deleteClockItemByIds(Long[] ids) {
        if (!CheckEmptyUtil.isEmpty(ids)) {
            for (Long id : ids) {
                Integer count = clockItemMapper.selectCount(id);
                if (count > 0) {
                    throw new RuntimeException("请先删除项目规格");
                }
            }
        }

        return clockItemMapper.deleteClockItemByIds(ids);
    }

    /**
     * 删除加钟服务项目信息
     *
     * @param id 加钟服务项目主键
     * @return 结果
     */
    @Override
    public int deleteClockItemById(Long id) {
        Integer count = clockItemMapper.selectCount(id);
        if (count > 0) {
            throw new RuntimeException("请先删除项目规格");
        }
        return clockItemMapper.deleteClockItemById(id);
    }
}
